home *** CD-ROM | disk | FTP | other *** search
/ A.C.E. 2 / ACE CD 2.iso / FILES / GAMES / 1-L / FUNS4572.DMS / in.adf / Log Cabin.AMOS / Log Cabin.amosSourceCode
Encoding:
AMOS Source Code  |  1990-10-25  |  13.8 KB  |  342 lines

  1. '*************************************************************************** 
  2. '****************** Log cabin (c)1991 Europress Software ******************* 
  3. '*************************************************************************** 
  4. '
  5. Set Buffer 6 : Curs Off : Hide On : Priority Reverse On : Randomize Timer
  6. Set Sprite Buffer 256 : For I=1 To 16 : Erase I : Next I
  7. Load "logmu1.abk",13 : Load "logmu2.abk",14 : Load "logscr.abk",15 : Load "logspr.abk",1
  8. '
  9. Dim QUESTION$(5),QUESTION(5),GAPS(4),_MULTAB(6)
  10. Global LEV
  11. '
  12. '********** INITIALIZE 
  13. For I=1 To 15 : Channel I To Bob I : Next I
  14. Restore MULTIPLICATION_TABLE : For I=0 To 5 : Read _MULTAB(I) : Next I : For I=0 To 4 : GAPS(I)=0 : Next I : Sload Start(13),Start(14)
  15. Key Speed 255,255 : LEV=1 : SKIP=-1
  16. '
  17. '********** MAIN 
  18. _LOGSEL=-1 : QC=0 : Gosub _SETUP_QUESTIONS
  19. '
  20. _RESET_GAME:
  21. Auto View Off : Screen Open 0,320,200,16,Lowres : Flash Off : Curs Off : Hide On : Fade 1 : Wait 15 : Auto View On : View : Wait Vbl 
  22. Bob Update Off : Sprite Update Off : Update Off : Limit Mouse X Hard(48),Y Hard(109) To X Hard(114),Y Hard(189) : Wait Vbl 
  23. '
  24. Fade 1 : Wait 15 : Unpack 15 To 0 : Double Buffer : Autoback 0 : Gosub _DRAW_LOGS
  25. '
  26. Bob 5,92+16+8,126,6 : Anim 5,"(6,10)(6,10)L" : Anim On 5 : Rem --- Tap foot --- 
  27. '
  28. Reserve Zone 5 : For I=0 To 4 : Set Zone I+1,39,110+(I*16) To 116,110+(I*16)+15 : Next I
  29. '
  30. If _RESET_GAME=False
  31.    _NEXT_QUESTION:
  32.    Repeat : _ANS=Rnd(5-1) : Until QUESTION(_ANS)<>0 : Repeat : _LOG=Rnd(4-1) : Until GAPS(_LOG)=0
  33. End If 
  34. _RESET_GAME=False
  35. '
  36. _FLASH_QUESTION:
  37. For I=0 To 3 : If GAPS(I)=1 : Bob 16+I,239,(I*16)+97,16 : End If : Next I
  38. Gosub _SCREEN_SWAP : Fade 2,$0*2,$777*2,$456*2,$234*2,$363*2,$50*2,$227*2,$117*2,$744*2,$722*2,$742*2,$620*2,$410*2,$210*2,$0*2,$30*2 : Wait 15*2 : For I=0 To 15 : Colour 16+I,Colour(I) : Next I
  39. For I=0 To 4 : Ink 0 : Bar 242,(_LOG*16)+96 To 298,(_LOG*16)+96+15 : Screen Swap : Wait Vbl : Wait 5 : _TEXT[QUESTION$(_ANS),270-((Len(QUESTION$(_ANS))*8)/2),100+_LOG*16] : Screen Swap : Wait Vbl : Wait 5 : Next I
  40. _TEXT[QUESTION$(_ANS),270-((Len(QUESTION$(_ANS))*8)/2),100+_LOG*16] : Screen Swap : Wait Vbl 
  41. '
  42. _MAIN:
  43. K$=Inkey$ : SC=Scancode : MK=Mouse Key : XM=X Mouse : YM=Y Mouse : ZN=Hzone(XM,YM)
  44. '
  45. Sprite 8,XM,YM,1 : Gosub _SCREEN_SWAP
  46. '
  47. If K$=" " or SC=$4D
  48.     Extension_1_022E 1,3,0,0 : Add _LOGSEL,1,0 To 4
  49. End If 
  50. If SC=$4C
  51.     Extension_1_022E 1,3,0,0 : Add _LOGSEL,-1,0 To 4
  52. End If 
  53. If K$=" " or SC=$4C or SC=$4D
  54.    X Mouse=X Hard(80) : Y Mouse=Y Hard(118+(_LOGSEL*16))
  55.    If QUESTION(0)=0
  56.       If _LOGSEL=_LOWSEL or _LOGSEL=0
  57.          If(SC=$4D) or(K$=" ")
  58.             For I=0 To 2
  59.             If QUESTION(I)=0
  60.                Next I
  61.             End If 
  62.             _LOWSEL=I-1
  63.          Else 
  64.             I=4
  65.          End If 
  66.          _LOGSEL=I : X Mouse=X Hard(80) : Y Mouse=Y Hard(118+(_LOGSEL*16))
  67.       End If 
  68.    End If 
  69. End If 
  70. If K$=Chr$(13)
  71.     Extension_1_022E 1,3,0,0 : ZN=Hzone(XM,YM)
  72. End If 
  73. '
  74. If((MK=1 and ZN<>0) or(K$=Chr$(13) and ZN<>0))
  75.    If QUESTION(ZN-1)<>0 : Extension_1_022E 1,3,0,0 : _LOGSEL=ZN-1 : Sprite Off : Gosub _CHECK_ANSWER
  76.       If _DONE and QC<4 : QC=0 : For I=0 To 4 : GAPS(I)=0 : Next I : Gosub _SETUP_QUESTIONS : Goto _RESET_GAME : End If 
  77.       If _DONE and QC>=4 : QC=0 : _LEVS_BIT : For I=0 To 4 : GAPS(I)=0 : Next I : Gosub _SETUP_QUESTIONS : Goto _RESET_GAME : End If 
  78.       If CORRECT : Goto _NEXT_QUESTION : End If 
  79.    End If 
  80. End If 
  81. '
  82. If SC=69 : Extension_1_022E 1,3,0,0 : _QUIT_BIT : _RESET_GAME=True : Goto _RESET_GAME : End If : Rem *-> Quit box 
  83. If SC=89 : Extension_1_022E 1,3,0,0 : _LEVS_BIT : QC=0 : For I=0 To 4 : GAPS(I)=0 : Next I : Gosub _SETUP_QUESTIONS : Goto _RESET_GAME : End If : Rem *-> Level selector 
  84. Goto _MAIN
  85. '
  86. '********** SWAP LOGIC AND PHYSIC SCREENS
  87. _SCREEN_SWAP:
  88.    Bob Update : Sprite Update : Wait Vbl : Bob Clear : Bob Draw : Screen Swap : Wait Vbl 
  89. Return 
  90. '
  91. '********** CHECK ANSWER 
  92. _CHECK_ANSWER:
  93. If _LOGSEL=_ANS : Inc QC : End If 
  94. _ANSWER_QUESTION_FOR_DOPEY_KID:
  95. OLD_QUESTION=QUESTION(_LOGSEL) : OLD_QUESTION$=QUESTION$(_LOGSEL)
  96. '
  97. '*** MAKE LOGS FALL ON TOP OF EACH OTHER 
  98. If _LOGSEL>0 Then For I=_LOGSEL-1 To 0 Step -1 : QUESTION$(I+1)=QUESTION$(I) : QUESTION(I+1)=QUESTION(I) : Next I
  99. QUESTION$(0)="" : QUESTION(0)=0 : Gosub _DRAW_LOGS
  100. '
  101. '*** WALK TO CABIN 
  102. Anim 5,"(4,5)(5,5)L" : Move X 5,"(1,1,40)L" : Move On : Anim On 
  103. While X Bob(5)<185 : Gosub _SCREEN_SWAP : Wend : Anim Off : Move Off 
  104. Bob 5,X Bob(5),Y Bob(5),9 : Bob 4,X Bob(5)+6,Y Bob(5)-11,15 : Gosub _SCREEN_SWAP : Wait 10
  105. Bob 5,X Bob(5),Y Bob(5),9 : Gosub _SCREEN_SWAP
  106. '
  107. '*** THROW LOG 
  108. If _LOGSEL=_ANS
  109.    '*** CORRECT 
  110.    Move X 4,"(1,1,48)" : Move Y 4,"(1,-4,8)(1,-3,8)(1,-2,4)(1,-1,4)(4,0,1)(1,1,4)(1,2,4)(1,3,7)(1,4,"+Str$((_LOG+1)*4)+")" : Move On 4
  111.     Extension_1_022E 1,5,0,0 : Repeat : Gosub _SCREEN_SWAP : Until Y Bob(4)=80+((_LOG+1)*16) : Move Off : GAPS(_LOG)=1
  112.    X=X Bob(4) : Y=Y Bob(4) : Bob 16+_LOG,X-1,Y+1,16 : Bob Off 4 : Gosub _SCREEN_SWAP
  113.    Anim 5,"(11,25)(12,25)(11,25)" : Anim On : Extension_1_022E 1,1,0,0 : Repeat : Gosub _SCREEN_SWAP : Until I Bob(5)=11 : Wait 75 : Anim Off : Wait 25
  114.    '
  115.    '*** WALK TO PILE OF LOGS
  116.    XD=92+16+8+8 : Anim 5,"(13,5)(14,5)L" : Move X 5,"(1,-1,40)L" : Move On : Anim On 
  117.    Repeat : Gosub _SCREEN_SWAP : Until X Bob(5)<=XD : Anim Off : Move Off 
  118.    Bob 5,X Bob(5)-6,126,6 : Gosub _SCREEN_SWAP : AO_TRIES=0 : CORRECT=True
  119. Else 
  120.    '*** WRONG 
  121.    CORRECT=False : If _LOGSEL>_ANS : Inc _ANS : End If 
  122.    Inc AO_TRIES : Move X 4,"(1,1,48)" : Move Y 4,"(1,-4,8)(1,-3,8)(1,-2,4)(1,-1,4)(4,0,1)(1,1,4)(1,2,4)(1,3,7)(1,4,24)" : Move On 4
  123.     Extension_1_022E 1,5,0,0 : Repeat : Gosub _SCREEN_SWAP : Until Y Bob(4)=80+(24*4) : Move Off 
  124.    Move X 4,"(1,-2,24)" : Move Y 4,"(1,-4,5)(1,-3,4)(1,-2,3)(1,-1,2)(2,0,1)(1,1,2)(1,2,3)(1,3,3)" : Move On 4
  125.     Extension_1_022E 1,2,0,0 : Repeat : Gosub _SCREEN_SWAP : Until Movon(4)=0 : Move Off 
  126.    '
  127.    Bob Off 4 : Bob 5,X Bob(5),Y Bob(5),5 : Gosub _SCREEN_SWAP : Wait 25
  128.    '
  129.    Anim 5,"(2,5)(3,5)L" : Move X 5,"(1,-1,40)L" : Move On : Anim On : While X Bob(5)>92+16+8+8 : Gosub _SCREEN_SWAP : Wend : Anim Off : Move Off 
  130.    '
  131.    '*** WALK TO PILE OF LOGS
  132.    Anim 5,"(13,5)(14,5)L" : Move X 5,"(1,-1,40)L" : Move On : Anim On 
  133.    Repeat : Gosub _SCREEN_SWAP : Until X Bob(5)<=92+16+8+8 : Anim Off : Move Off 
  134.    Bob 5,X Bob(5)-6,126,6 : Gosub _SCREEN_SWAP
  135.    '
  136.    '*** PUT LOG BACK ON PILE
  137. If QUESTION(0)=0 : I=-1 : Repeat : Inc I : Until QUESTION(I)<>0 : Dec I Else I=0 : End If 
  138.    QUESTION$(I)=OLD_QUESTION$ : QUESTION(I)=OLD_QUESTION : Gosub _DRAW_LOGS : Wait 20
  139.    '
  140.    '*** HELP
  141.    If AO_TRIES>=2
  142.       For TL=1 To 3 : SKIP=_ANS : Gosub _DRAW_LOGS : Wait 20 : SKIP=-1 : Gosub _DRAW_LOGS : Wait 20 : Next TL
  143.    End If 
  144.    If AO_TRIES>=3
  145.       _LOGSEL=_ANS : Goto _ANSWER_QUESTION_FOR_DOPEY_KID
  146.    End If 
  147. End If 
  148. '
  149. _DONE=True : For I=0 To 3 : If GAPS(I)=0 : _DONE=False : End If : Next I
  150. '
  151. '*** END OF LEVEL SEQUENCE 
  152. If _DONE
  153.     Extension_1_022E 1,0,0,0 : Bob 20,134,91,184 : Gosub _SCREEN_SWAP
  154.    Wait Vbl : Bob 5,X Bob(5)-3,126,178 : Bob 13,221,106,180 : Bob 14,190,127,182 : Limit Bob 0,0 To 196,200
  155.    Move X 13,"(1,-1,85)" : Move X 14,"(1,-1,85)" : Anim 13,"(17,5)(18,5)L" : Anim 14,"(19,5)(20,5)L" : Anim On : Move On 
  156.    While X Bob(13)>136 : Gosub _SCREEN_SWAP : Wend : Move Off : Anim 13,"(17,8)(18,8)L" : Anim 14,"(19,8)(20,8)L" : Anim 5,"(13,8)(14,8)L" : Anim On 
  157.    Limit Bob : Timer=0 : Repeat : Gosub _SCREEN_SWAP : Until Timer>200 : Limit Bob 0,0 To 196,200 : Move X 13,"(1,1,85)" : Move X 14,"(1,1,85)" : Move X 5,"(1,1,140)" : Move Y 5,"(2,-1,140)" : Anim 5,"(177,5)(178,5)L"
  158.    Anim 13,"(179,5)(180,5)L" : Anim 14,"(181,5)(182,5)L" : Anim On : Move On : While X Bob(13)<221 : Gosub _SCREEN_SWAP : Wend : Move Off 
  159.    Bob Off 20 : Timer=0 : Repeat : Gosub _SCREEN_SWAP : Until Timer>80 : Limit Bob : Wait Vbl 
  160. End If 
  161. Return 
  162. '
  163. '********** DRAW PILE OF LOGS
  164. _DRAW_LOGS:
  165. For J=0 To 1
  166.    Paste Bob 33,100,183
  167.    For I=0 To 4
  168.       If SKIP<>I and QUESTION(I)<>0
  169.          Paste Bob 39+I,102+(I*16),15 : _TEXT[Str$(QUESTION(I)),36+32+I-(Len(Str$(QUESTION(I))-" ")*8)/2,102+(I*16)+4]
  170.       End If 
  171.    Next I
  172.    Screen Swap : Wait Vbl 
  173. Next J
  174. Return 
  175. '
  176. '********** SETUP QUESTIONS  
  177. _SETUP_QUESTIONS:
  178. If LEV=1
  179.    For I=0 To 4
  180.       _L1_ILLEGAL_QUESTION:
  181.       T=Rnd(2-1)
  182.       If T=0 : A=Rnd(10-1)+1 : B=Rnd(10-1)+1 : ANS=A+B : Gosub _ADD : End If 
  183.       If T=1 : A=Rnd(20-1)+1 : B=Rnd(10-1)+1 : ANS=A-B : Gosub _SUB : End If 
  184.       If ANS<2 or ANS>20
  185.          Goto _L1_ILLEGAL_QUESTION
  186.       End If 
  187.       For Q=0 To 4
  188.          If QUESTION(Q)=QUESTION(I) and Q<>I
  189.             Goto _L1_ILLEGAL_QUESTION
  190.          End If 
  191.       Next Q
  192.    Next I
  193. End If 
  194. If LEV=2
  195.    For I=0 To 4
  196.       _L2_ILLEGAL_QUESTION:
  197.       T=Rnd(2-1)
  198.       If T=0 : A=Rnd(30-1)+1 : B=Rnd(30-1)+1 : ANS=A+B : Gosub _ADD : End If 
  199.       If T=1 : A=Rnd(30-1)+1 : B=Rnd(30-1)+1 : ANS=A-B : Gosub _SUB : End If 
  200.       If ANS<2 or ANS>30
  201.          Goto _L2_ILLEGAL_QUESTION
  202.       End If 
  203.       For Q=0 To 4
  204.          If QUESTION(Q)=QUESTION(I) and Q<>I
  205.             Goto _L2_ILLEGAL_QUESTION
  206.          End If 
  207.       Next Q
  208.    Next I
  209. End If 
  210. If LEV=3
  211.    For I=0 To 4
  212.       _L3_ILLEGAL_QUESTION:
  213.       A=_MULTAB(Rnd(6-1)) : B=Rnd(12-1)+1 : ANS=A*B : Gosub _MUL
  214.       If ANS<2 or ANS>99
  215.          Goto _L3_ILLEGAL_QUESTION
  216.       End If 
  217.       For Q=0 To 4
  218.          If QUESTION(Q)=QUESTION(I) and Q<>I
  219.             Goto _L3_ILLEGAL_QUESTION
  220.          End If 
  221.       Next Q
  222.    Next I
  223. End If 
  224. If LEV=4
  225.    For I=0 To 4
  226.       _L4_ILLEGAL_QUESTION:
  227.       T=Rnd(2-1)
  228.       If T=0 : A=Rnd(12-1)+1 : B=Rnd(12-1)+1 : ANS=A*B : Gosub _MUL : End If 
  229.       If T=1 : B=Rnd(12-1)+1 : A=(Rnd(12-1)+1)*B : ANS=A/B : Gosub _DIV : End If 
  230.       If ANS<2 or ANS>99
  231.          Goto _L4_ILLEGAL_QUESTION
  232.       End If 
  233.       For Q=0 To 4
  234.          If QUESTION(Q)=QUESTION(I) and Q<>I
  235.             Goto _L4_ILLEGAL_QUESTION
  236.          End If 
  237.       Next Q
  238.    Next I
  239. End If 
  240. Return 
  241. '
  242. _ADD:
  243.    POS=Rnd(3-1)
  244.    If POS=0 : QUESTION(I)=A : QUESTION$(I)=("?+"+Str$(B)+"="+Str$(A+B))-" " : End If 
  245.    If POS=1 : QUESTION(I)=B : QUESTION$(I)=(Str$(A)+"+?="+Str$(A+B))-" " : End If 
  246.    If POS=2 : QUESTION(I)=A+B : QUESTION$(I)=(Str$(A)+"+"+Str$(B)+"=?")-" " : End If 
  247. Return 
  248. _SUB:
  249.    POS=Rnd(3-1)
  250.    If POS=0 : QUESTION(I)=A : QUESTION$(I)=("?-"+Str$(B)+"="+Str$(A-B))-" " : End If 
  251.    If POS=1 : QUESTION(I)=B : QUESTION$(I)=(Str$(A)+"-?="+Str$(A-B))-" " : End If 
  252.    If POS=2 : QUESTION(I)=A-B : QUESTION$(I)=(Str$(A)+"-"+Str$(B)+"=?")-" " : End If 
  253. Return 
  254. _MUL:
  255.    POS=Rnd(3-1)
  256.    If POS=0 : QUESTION(I)=A : QUESTION$(I)=("?x"+Str$(B)+"="+Str$(A*B))-" " : End If 
  257.    If POS=1 : QUESTION(I)=B : QUESTION$(I)=(Str$(A)+"x?="+Str$(A*B))-" " : End If 
  258.    If POS=2 : QUESTION(I)=A*B : QUESTION$(I)=(Str$(A)+"x"+Str$(B)+"=?")-" " : End If 
  259. Return 
  260. _DIV:
  261.    POS=Rnd(3-1)
  262.    If POS=0 : QUESTION(I)=A : QUESTION$(I)=("?/"+Str$(B)+"="+Str$(A/B))-" " : End If 
  263.    If POS=1 : QUESTION(I)=B : QUESTION$(I)=(Str$(A)+"/?="+Str$(A/B))-" " : End If 
  264.    If POS=2 : QUESTION(I)=A/B : QUESTION$(I)=(Str$(A)+"/"+Str$(B)+"=?")-" " : End If 
  265. Return 
  266. '
  267. '********** PROCEDURES 
  268. Procedure _QUIT_BIT
  269.    Priority Reverse Off 
  270.    For LOP=1 To 15 : Erase LOP : Next LOP
  271.    If Chip Free+Fast Free>250000
  272.       Run "Menu_A500.AMOS"
  273.    Else 
  274.       Run "No_Memory.AMOS"
  275.    End If 
  276. End Proc
  277. Procedure _LEVS_BIT
  278.    60000 Rem --- Level select/animation for Fun School 4 (5to7's).
  279.    DELAY=50*5 : MXLEV=4 : SPOS=154
  280.    '-- Fade out screen and set up level select screen --  ' 
  281.    Fade 1 : Wait 15 : Sprite Off : Bob Off : Update On 
  282.    Screen Close 0 : Auto View Off : Screen Open 0,320,200,16,Lowres : Flash Off 
  283.    Curs Off : Fade 1 : Wait 15 : Cls 0 : Double Buffer : Autoback 2
  284.    60140 If LEV<MXLEV Then FREDDIEJUMP=1 : Else FREDDIEJUMP=0
  285.    60160 Paste Bob 124,8,SPOS
  286.    60170 X=148-24*MXLEV : SX=X-48+LEV*48
  287.    60190 For L=0 To MXLEV-1 : R=Rnd(1)
  288.       Bob 3+L,X+L*48,111+L mod 2,SPOS+7
  289.       If R=0 Then Anim 3+L,"("+Str$(SPOS+7)+",8)("+Str$(SPOS+21)+",8)("+Str$(SPOS+22)+",8)l"
  290.       If R=1 Then Anim 3+L,"("+Str$(SPOS+22)+",8)("+Str$(SPOS+21)+",8)("+Str$(SPOS+7)+",8)l"
  291.       Anim On 3+L : Wait 4
  292.    Next L
  293.    Bob 2,148,32,SPOS+LEV : Bob 1,SX,120,SPOS+8 : Bob 2,148,32,SPOS+LEV
  294.    Auto View On : View : Wait Vbl : Fade 1,$2F,$EEE,$8AC,$468,$6C6,$A0,$44E,$22E,$E88,$E44,$E84,$C40,$820,$EE0,$0,$60 : Wait 15
  295.    60290 Timer=0 : Clear Key : SC=0 : I$=""
  296.     While I$<>" " and(I$<>Chr$(13))
  297.        I$=Inkey$ : If Scancode=89 or Jright(1) Then I$=" "
  298.        If Timer>DELAY or Fire(1) Then I$=Chr$(13)
  299.        If FREDDIEJUMP=1 Then I$=" "
  300.     Wend 
  301.    If FREDDIEJUMP<>1 Then Extension_1_022E 1,3,0,0
  302.    60350 FREDDIEJUMP=0
  303.    60360 If I$=Chr$(13) Then 60530
  304.    Add LEV,1,1 To MXLEV
  305.    60380 Bob 2,148,32,SPOS+LEV
  306.    60390 Rem --- Jump frog to next level ---
  307.    60400 If LEV=1 Then Gosub 60450 : Goto 60430
  308.    60410 Move X 1,"(1,2,24)" : Move Y 1,"(1,-3,6)(1,-2,4)(1,-1,2)(2,0,1)(1,1,2)(1,2,4)(1,3,6)" : Anim 1,"("+Str$(SPOS+10)+",24)("+Str$(SPOS+8)+",1)" : Anim On 1 : Move On 1
  309.    60420 Wait 30
  310.    60430 Bob 2,148,32,SPOS+LEV
  311.    60440 Goto 60290
  312.    60442 Rem
  313.    60450 Rem --- Swim back to level 1 --- 
  314.    Move X 1,"(1,2,16)(1,1,16)" : Move Y 1,"(1,-2,6)(1,-1,4)(2,0,1)(1,1,4)(1,2,12)"
  315.    Anim 1,"("+Str$(SPOS+10)+",24)("+Str$(SPOS+11)+",6)("+Str$(SPOS+12)+",6)("+Str$(SPOS+13)+",12)("+Str$(SPOS+14)+",1)"
  316.    Anim On 1 : Move On 1
  317.    Wait 30 : Move X 1,"(4,-1,4)(2,-1,4)(1,-1,10)(1,-2,65)(1,-1,18)"
  318.    Move Y 1,"(2,1,4)(1,1,4)(1,1,8)(2,1,1)(4,1,1)(8,1,1)" : Move On 1
  319.    60480 Wait 24 : Anim 1,"("+Str$(SPOS+15)+",1)" : Anim On 1
  320.    60490 Wait 101
  321.    60500 Move X 1,"(1,-2,12)" : Move Y 1,"(4,-1,1)(2,-1,1)(1,-1,31)(2,-1,1)(2,0,1)(2,1,1)(1,1,2)"
  322.    Anim 1,"("+Str$(SPOS+16)+",10)("+Str$(SPOS+17)+",10)("+Str$(SPOS+18)+",5)("+Str$(SPOS+19)+",18)("+Str$(SPOS+20)+",25)("+Str$(SPOS+8)+",1)"
  323.    Move On 1 : Anim On 1
  324.    60510 Wait 70
  325.    60520 Return 
  326.    60530 Rem --- End level selection ---
  327.    Fade 1 : Wait 15
  328. End Proc
  329. Procedure _TEXT[_TXT$,X,Y]
  330.    Gr Writing 0
  331.    Y=Y+6
  332.    Ink 14
  333.    Text X+1,Y,_TXT$
  334.    Text X-1,Y,_TXT$
  335.    Text X,Y-1,_TXT$
  336.    Text X,Y+1,_TXT$
  337.    Ink 1
  338.    Text X,Y,_TXT$
  339. End Proc
  340. '
  341. MULTIPLICATION_TABLE:
  342. Data 2,3,4,5,10,11